Programiranjem rešavamo realne probleme, a u realnom svetu često ne odlučujemo samo da li nešto da uradimo ili ne, već često biramo koju od dve stvari treba uraditi. Tako je i u poslednjem primeru koji smo uradili u lekciji "Uslovno izvršavanje".

Ovaj program će ili izvršiti liniju koraka = J - P; ili liniju koraka = P - J; jer je tačno jedan uslov zadovoljen. Drugi uslov je negacija prvog zato što, ako je uslov J > P tačan, uslov !(J > P) će biti netačan i obrnuto.
Ovako nešto se često javlja u programiranju - dva dela programa gde se svaki deo izvršava uslovno, a uvek se izvršava jedan od ta dva dela i nikada se ne izvršavaju oba. Ovakvo uslovno izvršavanje se toliko često javlja da postoji posebna struktura koja ga opisuje.
Opisana struktura se zove if-else i koristi se u sledećem programskom kodu.
#include <iostream>
int main()
{
int J, P;
std::cout << "Unesite dva broja - koliko Miki treba do Jocine "
<< "i koliko Miki treba do Perine kuce:" << std::endl;
std::cin >> J >> P;
int koraka;
if ( J > P )
{
koraka = J - P;
}
else
{
koraka = P - J;
}
std::cout << koraka << std::endl;
}

Posle if strukture koja nam je već poznata piše se ključna reč else, otvorena vitičasta zagrada, a zatim naredbe koje se izvršavaju samo kada uslov nije tačan, i na kraju zatvorena vitičasta zagrada.
Primetimo da grananje nije ništa suštinski novo - i dalje se bavimo samo uslovnim izvršavanjem - ali nam olakšava i skraćuje pisanje (i izvršavanje) programa.
Na engleskom jeziku "if" znači ako, a "else" znači inače. Ovaj prevod nam omogućava da bolje razumemo ovaj koncept. Deo posle ključne reči if se izvršava ako je uslov tačan, inače se izvršava deo posle ključne reči else.